home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 7: Sunsite / Linux Cubed Series 7 - Sunsite Vol 1.iso / system / shells / scsh-0.4 / scsh-0 / scsh-0.4.2 / scsh / ndbm1.c < prev    next >
C/C++ Source or Header  |  1995-10-13  |  2KB  |  108 lines

  1. /* Scheme48/scsh Unix system interface.
  2. ** Routines that require custom C support.
  3. ** Copyright (c) 1995 by David Albertz.
  4. */
  5.  
  6. /*  Common dbm access routines */
  7.  
  8. #include <stdio.h>
  9. #include <errno.h>
  10. #include <ndbm.h>
  11.  
  12. #include "cstuff.h"
  13.  
  14. extern int errno;
  15.  
  16. int database_close (DBM *db)
  17. {
  18.     dbm_close(db);
  19.     return 0;
  20.     }
  21.  
  22. int database_error(DBM *db)
  23. {
  24.     return(dbm_error(db));
  25.     }
  26.  
  27. int database_clearerr(DBM *db)
  28. {
  29.     return(dbm_clearerr(db));
  30.     }
  31.  
  32. int database_delete(DBM *db, char *key)
  33. {
  34.     datum work_key;
  35.     work_key.dptr = key;
  36.     work_key.dsize = strlen(key);
  37.     return(dbm_delete(db, work_key));
  38.     }
  39.  
  40. char *database_fetch(DBM *db, char *key)
  41. {
  42.     datum work_key, work_data;
  43.     char *work_string;
  44.     work_key.dptr = key;
  45.     work_key.dsize = strlen(key);
  46.     work_data = dbm_fetch(db, work_key);
  47.     if (work_data.dptr == NULL)
  48.     {
  49.     work_string = Malloc(char, 1);
  50.     work_string[0] = '\0';
  51.     }
  52.     else
  53.     {
  54.     work_string = Malloc(char, work_data.dsize+1);
  55.     strncpy(work_string,work_data.dptr,work_data.dsize);
  56.     work_string[work_data.dsize] = '\0';
  57.     }
  58.     return(work_string);
  59.     }
  60.  
  61. int database_store(DBM *db, char *key, char *data, int flags)
  62. {
  63.     datum work_key, work_data;
  64.     work_key.dptr = key;
  65.     work_key.dsize = strlen(key);
  66.     work_data.dptr = data;
  67.     work_data.dsize = strlen(data);
  68.     return(dbm_store(db, work_key, work_data, flags));
  69.     }
  70.  
  71. char *database_first(DBM *db)
  72. {
  73.     datum work_key;
  74.     char *work_string;
  75.     work_key = dbm_firstkey(db);
  76.     if (work_key.dptr == NULL)
  77.     {
  78.     work_string = Malloc(char, 1);
  79.     work_string[0] = '\0';
  80.     }
  81.     else
  82.     {
  83.     work_string = Malloc(char, work_key.dsize+1);
  84.     strncpy(work_string,work_key.dptr,work_key.dsize);
  85.     work_string[work_key.dsize] = '\0';
  86.     }
  87.     return(work_string);
  88.     }
  89.  
  90. char *database_next(DBM *db)
  91. {
  92.     datum work_key;
  93.     char *work_string;
  94.     work_key = dbm_nextkey(db);
  95.     if (work_key.dptr == NULL)
  96.     {
  97.     work_string = Malloc(char, 1);
  98.     work_string[0] = '\0';
  99.     }
  100.     else
  101.     {
  102.     work_string = Malloc(char, work_key.dsize+1);
  103.     strncpy(work_string,work_key.dptr,work_key.dsize);
  104.     work_string[work_key.dsize] = '\0';
  105.     }
  106.     return(work_string);
  107.     }
  108.